package com.hulk.dryad.manage.framework.xss.config;

import cn.hutool.core.collection.CollUtil;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.ArrayList;
import java.util.List;

/**
 * Xss配置类
 *
 *  @author hulk
 */
@Getter
@Setter
@ConfigurationProperties(XssProperties.PREFIX)
public class XssProperties implements InitializingBean {

	static final String PREFIX = "security.xss";

	/**
	 * 开启xss
	 */
	private boolean enabled = true;
	/**
	 * 对文件进行首尾 trim
	 */
	private boolean trimText = true;
	/**
	 * 模式：clear 清理（默认），escape 转义
	 */
	private Mode mode = Mode.clear;
	/**
	 * prettyPrint，默认关闭： 保留换行
	 */
	private boolean prettyPrint = false;
	/**
	 * 使用转义，默认关闭
	 */
	private boolean enableEscape = false;
	/**
	 * 拦截的路由，默认拦截 /**
	 */
	private List<String> pathPatterns = new ArrayList<>();

	/**
	 * 放行的规则，默认为空
	 */
	private List<String> pathExcludePatterns = new ArrayList<>();

	@Override
	public void afterPropertiesSet() {
		if (CollUtil.isEmpty(pathPatterns)) {
			pathPatterns.add("/**");
		}
	}

	public enum Mode {
		/**
		 * 清理
		 */
		clear,
		/**
		 * 转义
		 */
		escape;
	}

}
